package config

import (
  "dog.com"
  "strconv"
  "github.com/go-ini/ini"
  "fmt"
  "strings"
)

var TestNum int = 1024

func LoadSystemConfig() {
  //获取全局系统配置变量 config
  config := dog.ConfigFactory()

  //需要改一下改成常量 etc/my.ini
  cfg, err := ini.Load("etc/my.ini")
  if err != nil {
    fmt.Println("打开配置文件 <" , "etc/my.ini", ">失败!")
    return
  }

  //取mysql数据库用户名
  key, err := cfg.Section("mysql").GetKey("username")
  if err != nil {
    fmt.Println("读取段[mysql]的username的值失败!")
    return
  }
  config.Mysql.User = key.String()

  //取mysql数据库密码
  key, err = cfg.Section("mysql").GetKey("password")
  if err != nil {
    fmt.Println("读取段[mysql]的password的值失败!")
    return
  }
  config.Mysql.Passwd = key.String()

  //取service的ip地址
  key, err = cfg.Section("service").GetKey("ip")
  if err != nil {
    fmt.Println("读取段[service]的ip的值失败!")
    return
  }
  config.Service.Ip = key.String()

  //取service的port地址
  key, err = cfg.Section("service").GetKey("port")
  if err != nil {
    fmt.Println("读取段[service]的port的值失败!")
    return
  }
  config.Service.Port = key.String()

  //取得服务器最大服务数
  key, err = cfg.Section("service").GetKey("max_service_num")
  if err != nil {
    fmt.Println("读取段[service]的max_service_num的值失败!")
    return
  }
  config.Service.MaxServiceNum, err = strconv.Atoi(key.String())
  if err != nil {
    fmt.Println("转换MaxServiceNum到整型的值失败!")
    return
  }

  //取log文件地址信息
  key, err = cfg.Section("log").GetKey("logfile")
  if err != nil {
    fmt.Println("读取段[log]的logfile的值失败!")
    return
  }
  config.Logfile = key.String()

  //取log 日志等级
  key, err = cfg.Section("log").GetKey("loglevel")
  if err != nil {
    fmt.Println("读取段[log]的logfile的值失败!")
    return
  }
  sLogLevel := key.String()
  config.LogLevel = strings.Split(sLogLevel, "|")

  //设置Lru最大空间
  key, err = cfg.Section("lru").GetKey("capacity")
  if err != nil {
    fmt.Println("读取段[lru]的capacity的值失败!")
    return
  } else {
      //设置 lru 默认的空间大小10000
  }
  config.Lru.Capacity = key.String()

  /************* core section start ****************/

  //设置jobqueue的转发队列的容量
  key, err = cfg.Section("core").GetKey("jobqueue")
  if err != nil {
    fmt.Println("读取段[core]的jobqueue的值失败!")
    return
  } else {
      //设置 jobqueue 默认的空间大小10000

  }
  config.Core.JobQueueCapacity = key.String()

  //设置MaxWorderNum的转发队列的容量
  key, err = cfg.Section("core").GetKey("maxworker")
  if err != nil {
    fmt.Println("读取段[core]的jobqueue的值失败!")
    return
  } else {
      //设置 maxworder 默认的空间大小10000

  }
  config.Core.MaxWorkerNum = key.String()
  /************* core section end ******************/


  //设置redis Ip 地址
  key, err = cfg.Section("redis").GetKey("ip")
  if err != nil {
    fmt.Println("读取段[redis]的ip的值失败!")
    return
  } else {
      //设置 jobqueue 默认的空间大小10000

  }
  config.Redis.Ip = key.String()
}
